# -*- coding: utf-8 -*-
from django.core.management.base import BaseCommand
from app.models import Pagos, Notificaciones

class Command(BaseCommand):
    
    def handle(self, *args, **options):
        from datetime import date
        from app.models import LogMensajes, Estudiante, Configuracion
        from app.models import Matricula
        from datetime import date, timedelta
        from django.utils.datetime_safe import datetime
        from django.core.mail import send_mail

        
        config_id = str( args[ 0 ] )
        self.stdout.write(config_id) 
#        try:
        configuracion = Configuracion.objects.filter(id=config_id)
        for config in configuracion:
            notificados = 0
            fecha = date.today()
            dias=config.email_moroso
            if dias>0:
                estudiantes = Estudiante.objects.filter(configuracion_id=config.id)
                
                matricula = Matricula.objects.filter(estudiante__in = estudiantes)
                    
                for mat in matricula:
                    if len(mat.estudiante.email)>0:
                        cuotas = 0
                        pagado = 0
                        valor = 0
                        cuot = ""
                        pagos = Pagos.objects.filter(matricula_id = mat.id).order_by('id')
                        for pago in pagos:
                            pagado = pagado + pago.pagado
                            valor = valor + pago.valor
                            
                            if pago.pagado<pago.valor and pago.cancelada==0:
                                fecha_pago = datetime(pago.fecha.year, pago.fecha.month, pago.fecha.day)
                                fecha = fecha_pago + timedelta(days=dias)
                                hoy = datetime.today()
                                diff = hoy - fecha
                                if diff.days > 0 and valor>pagado:
                                    cuotas = cuotas + 1
                                    cuot = "%s %s %s" %(cuot, valor, pagado)           
                        if(cuotas>0 and round((valor-pagado), 1)>0):
                            texto = u" Buen dia.\n\n Le escribimos para recordarle que el crédito que actualmente tiene vigente con %s " \
                                        u" para el programa %s tiene %s cuotas en mora. Por favor comuníquese con nosotros. " \
                                        u" Si ya se encuentra a paz y salvo haga caso omiso a este mensaje. \n\n " \
                                        u"Cordialmente,\n\n Cartera %s" \
                                        %(config.institucion, mat.facultad.nombre, cuotas, config.institucion)
#                            texto = u"%s cuotas." %(cuotas)
                            asunto = u"Recordatorio credito con %s." %(config.institucion)
                            
                            send_mail(asunto, texto, config.usuario.email, [mat.estudiante.email], fail_silently=False)
                            fecha = date.today()
                            logmensajes = LogMensajes(configuracion_id=config.id, estudiante_id=mat.estudiante.id, fecha=fecha, 
                                                      tipo='1', destino=mat.estudiante.email, mensaje = texto)
                            logmensajes.save()
                            notificados = notificados + 1
            notificaciones = Notificaciones(configuracion_id=config.id, fecha=datetime.today(), notificados=notificados)
            notificaciones.save()
        self.stdout.write('Mensaje guardado correctamente ')
#        except:
#            self.stdout.write('Se ha producido un error enviando el correo electronico. ')